package tests;

import org.junit.Test;

import utils.CustomRandom;

import AlgoritmosGeneticos.model.Individuo;
import AlgoritmosGeneticos.model.OperadorMutacion;
import AlgoritmosGeneticos.model.impl.IndividuoImpl;
import AlgoritmosGeneticos.model.impl.mutuaciones.MutacionBasica;
import AlgoritmosGeneticos.model.impl.mutuaciones.MutacionNoUniforme;


public class TestMutaciones {
	
	@Test
	public void mutacionBasica(){
		
		OperadorMutacion om= new MutacionBasica();
		new CustomRandom(1);
		
		Individuo i = new IndividuoImpl("101010101010",0.2);
		
		System.out.println("Original:\n" + i.getNumenoBinario());
		System.out.println( (i=om.mutar(i)).getNumenoBinario() );
		System.out.println( (i=om.mutar(i)).getNumenoBinario() );
		System.out.println( (i=om.mutar(i)).getNumenoBinario() );
	}
	
	@Test
	public void mutacionNoUniforme(){
		
		OperadorMutacion 	om=new MutacionNoUniforme(5, 0.1);
		Individuo 			i=new IndividuoImpl("101010101010",0.2);
		int 				it=0;
		new CustomRandom(1);
		
		while(it < 20){
			i.mutar(om);
			System.out.println("it: "  + it + " pMut: " + i.getpMut());
			((MutacionNoUniforme) om).increseIteration();
			it++;
		}
		
	}

}
